package ejb.managerbeans;

import java.util.List;

import javax.ejb.Local;

import ejb.dto.GiftListDTO;
import ejb.dto.PacchettoDTO;
import ejb.dto.ProdottoBaseDTO;
import ejb.dto.UserDTO;

@Local
public interface GiftListManagerBeanLocal 
{

	/**
     * @param emailUser = email di un utente registrato
     * @return restituisce una lista contenente le gift list di tipo Data Transfer Obeject che possiede l'utente passato come parametro
     */
	List<GiftListDTO> getUserGiftListDTO( String emailUser );

	/**
	 * rimuove la giftlist passata come parametro
	 * 
	 * @param glDTO
	 */
	void removeGiftList( GiftListDTO glDTO );
	
	/**
	 * aggiunge il pacchetto passato come parametro alla giftlist passata come parametro
	 * 
	 * @param packDTO
	 * @param glDTO
	 */
	void addPack(PacchettoDTO packDTO, GiftListDTO glDTO);

	/**
	 * crea una giftlist nuova, passata come parametro, all'utente passato come parametro
	 * 
	 * @param userDTO
	 * @param glDTO
	 */
	void createGiftList(UserDTO userDTO, GiftListDTO glDTO);

	/**
	 * rimuove il pacchetto passato come parametro alla giftlist passata come parametro
	 * 
	 * @param packDTO
	 * @param glDTO
	 */	
	void removePack(PacchettoDTO packDTO, GiftListDTO glDTO);

	/**
	 * aggiunge il prodottobase passato come parametro alla giftlist passata come parametro
	 * 
	 * @param pbkDTO
	 * @param glDTO
	 */
	void addBasicProduct(ProdottoBaseDTO pbDTO, GiftListDTO glDTO);

	/**
	 * rimuove il prodottobase passato come parametro alla giftlist passata come parametro
	 * 
	 * @param pbDTO
	 * @param glDTO
	 */
	void removeBasicProduct(ProdottoBaseDTO pbDTO, GiftListDTO glDTO);

	/**
	 * 
	 * @param emailUser
	 * @param nomeGf
	 * @return una giftlistDTO che ha come nome nomeGf e come utente possessore emailUser. se non esiste allora ritorna null
	 */
	GiftListDTO getGfOfUser(String emailUser, String nomeGf);

	List<GiftListDTO> getLoggedUserGiftListDTO();
}